#ifndef OBSERVER_HPP
#define OBSERVER_HPP
#include <iostream>
#include <set>
using namespace std;

class IObserver{
public:
virtual void update(string data) =0;
};

class Observable{
public:

    void notify(string data) const{
        for(set<IObserver*>::iterator it = observateurs.begin(); it != observateurs.end(); it++){
            (*it)->update(data);
        }
    }

    void AddObserver(IObserver * o){
        observateurs.insert(o);
    }

    void RMObserver(IObserver * o){
        observateurs.erase(o);
    }

private:
set<IObserver*> observateurs;




}

#endif
